/*
 * Copyright 2018 JDCLOUD.COM
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http:#www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * SmartDBA v2 API
 * SmartDBA T-paas版API,包含rds实例接入及展示、Metric查询、会话信息等
 *
 * OpenAPI spec version: v2
 * Contact: 
 *
 * NOTE: This class is auto generated by the jdcloud code generator program.
 */


using JDCloudSDK.Core.Auth;
using JDCloudSDK.Core.Client;
using JDCloudSDK.Core.Http;
using JDCloudSDK.Smartdba.Apis;
using JDCloudSDK.Smartdba.Model;
using System;
using System.Collections.Generic;
using System.Text;
#if NET40||NET35
#else
using System.Threading.Tasks;
#endif

namespace JDCloudSDK.Smartdba.Client
{
    /// <summary>
    ///  SmartDBA v2 API
    ///  SmartDBA T-paas版API,包含rds实例接入及展示、Metric查询、会话信息等
    ///  Smartdba Api 客户端
    ///</summary>
    public class SmartdbaClient : JdcloudClient
    {

        /// <summary>
        ///  默认私有构造函数
        /// </summary>
        private SmartdbaClient()
        {

        }

        /// <summary>
        /// 默认构造函数
        /// </summary>
        /// <param name="credentialsProvider">认证信息</param>
        /// <param name="httpRequestConfig">http 客户端配置信息</param>
        /// <param name="environment">sdk 环境配置信息</param>
        public SmartdbaClient(CredentialsProvider credentialsProvider, HttpRequestConfig httpRequestConfig,SDKEnvironment environment)
        {
            this.httpRequestConfig = httpRequestConfig;
            this.credentialsProvider = credentialsProvider;
            this.environment = environment;
        }

        /// <summary>
        /// 默认构造函数
        /// </summary>
        /// <param name="httpRequestConfig">http 客户端配置信息</param>
        /// <param name="credentialsProvider">认证信息</param>
        public SmartdbaClient(CredentialsProvider credentialsProvider,HttpRequestConfig httpRequestConfig)
        {
            this.httpRequestConfig = httpRequestConfig;
            this.credentialsProvider = credentialsProvider;
        }

        /// <summary>
        /// 默认构造函数，
        /// 注意如果使用此方法 httpRequestConfig 使用的http 请求 schema 为Https
        /// </summary>
        /// <param name="credentialsProvider">认证信息</param>
        public SmartdbaClient(CredentialsProvider credentialsProvider)
        {
            this.credentialsProvider = credentialsProvider;
        }

        /// <summary>
        ///  版本号 1.2.8
        ///</summary>
        public const string ClientVersion = "1.2.8";

        private const string apiVersion = "v2";
        private const string userAgentPrefix = "JdcloudSdkDotNet";
        private const string defaultEndpoint = "smartdba.jdcloud-api.com";
        private const string serviceName = "smartdba";
        private const string userAgent = userAgentPrefix + "/" + ClientVersion + " " + serviceName + "/" + apiVersion;


        private SDKEnvironment environment = new SDKEnvironment(defaultEndpoint);
        private CredentialsProvider credentialsProvider;
        private HttpRequestConfig httpRequestConfig;

        /// <summary>
        ///  获取证书信息
        ///</summary>
        public override CredentialsProvider CredentialsProvider   { get { return credentialsProvider; } }

        /// <summary>
        ///  获取http 客户端配置信息
        ///</summary>
        public override HttpRequestConfig HttpRequestConfig { get { return httpRequestConfig; } }

        /// <summary>
        ///  获取sdk环境配置信息
        ///</summary>
        public override SDKEnvironment SDKEnvironment { get { return environment; } }

        /// <summary>
        ///  获取用户自定义浏览器识别字符串
        ///</summary>
        public override string UserAgent { get { return userAgent; } }

        /// <summary>
        ///  获取服务名称
        ///</summary>
        public override string ServiceName { get { return serviceName; } }

        /// <summary>
        ///  获取版本号
        ///</summary>
        public override string Version { get { return apiVersion; } }



#if NET40||NET35
        /// <summary>
        ///  获取当前实例的所有诊断记录
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeDiagnoseListResponse DescribeDiagnoseList(DescribeDiagnoseListRequest request) {
            return  new DescribeDiagnoseListExecutor().Client(this).Execute<DescribeDiagnoseListResponse, DescribeDiagnoseListResult, DescribeDiagnoseListRequest>(request);
        }
#else
        /// <summary>
        ///  获取当前实例的所有诊断记录
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeDiagnoseListResponse> DescribeDiagnoseList(DescribeDiagnoseListRequest request) {
            return await new DescribeDiagnoseListExecutor().Client(this).Execute<DescribeDiagnoseListResponse, DescribeDiagnoseListResult, DescribeDiagnoseListRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取巡检记录
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeInspectResponse DescribeInspect(DescribeInspectRequest request) {
            return  new DescribeInspectExecutor().Client(this).Execute<DescribeInspectResponse, DescribeInspectResult, DescribeInspectRequest>(request);
        }
#else
        /// <summary>
        ///  获取巡检记录
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeInspectResponse> DescribeInspect(DescribeInspectRequest request) {
            return await new DescribeInspectExecutor().Client(this).Execute<DescribeInspectResponse, DescribeInspectResult, DescribeInspectRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取当前实例的会话信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeSessionsResponse DescribeSessions(DescribeSessionsRequest request) {
            return  new DescribeSessionsExecutor().Client(this).Execute<DescribeSessionsResponse, DescribeSessionsResult, DescribeSessionsRequest>(request);
        }
#else
        /// <summary>
        ///  获取当前实例的会话信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeSessionsResponse> DescribeSessions(DescribeSessionsRequest request) {
            return await new DescribeSessionsExecutor().Client(this).Execute<DescribeSessionsResponse, DescribeSessionsResult, DescribeSessionsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  空间明细
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeTableSpaceDetailResponse DescribeTableSpaceDetail(DescribeTableSpaceDetailRequest request) {
            return  new DescribeTableSpaceDetailExecutor().Client(this).Execute<DescribeTableSpaceDetailResponse, DescribeTableSpaceDetailResult, DescribeTableSpaceDetailRequest>(request);
        }
#else
        /// <summary>
        ///  空间明细
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeTableSpaceDetailResponse> DescribeTableSpaceDetail(DescribeTableSpaceDetailRequest request) {
            return await new DescribeTableSpaceDetailExecutor().Client(this).Execute<DescribeTableSpaceDetailResponse, DescribeTableSpaceDetailResult, DescribeTableSpaceDetailRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取指定库下的所有表名
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeAllTableInfoForDbResponse DescribeAllTableInfoForDb(DescribeAllTableInfoForDbRequest request) {
            return  new DescribeAllTableInfoForDbExecutor().Client(this).Execute<DescribeAllTableInfoForDbResponse, DescribeAllTableInfoForDbResult, DescribeAllTableInfoForDbRequest>(request);
        }
#else
        /// <summary>
        ///  获取指定库下的所有表名
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeAllTableInfoForDbResponse> DescribeAllTableInfoForDb(DescribeAllTableInfoForDbRequest request) {
            return await new DescribeAllTableInfoForDbExecutor().Client(this).Execute<DescribeAllTableInfoForDbResponse, DescribeAllTableInfoForDbResult, DescribeAllTableInfoForDbRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取待接入的mysql实例
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ToBeConnectClustersResponse ToBeConnectClusters(ToBeConnectClustersRequest request) {
            return  new ToBeConnectClustersExecutor().Client(this).Execute<ToBeConnectClustersResponse, ToBeConnectClustersResult, ToBeConnectClustersRequest>(request);
        }
#else
        /// <summary>
        ///  获取待接入的mysql实例
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ToBeConnectClustersResponse> ToBeConnectClusters(ToBeConnectClustersRequest request) {
            return await new ToBeConnectClustersExecutor().Client(this).Execute<ToBeConnectClustersResponse, ToBeConnectClustersResult, ToBeConnectClustersRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取一键诊断分数最低的top5
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeDiagnoseTopResourceResponse DescribeDiagnoseTopResource(DescribeDiagnoseTopResourceRequest request) {
            return  new DescribeDiagnoseTopResourceExecutor().Client(this).Execute<DescribeDiagnoseTopResourceResponse, DescribeDiagnoseTopResourceResult, DescribeDiagnoseTopResourceRequest>(request);
        }
#else
        /// <summary>
        ///  获取一键诊断分数最低的top5
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeDiagnoseTopResourceResponse> DescribeDiagnoseTopResource(DescribeDiagnoseTopResourceRequest request) {
            return await new DescribeDiagnoseTopResourceExecutor().Client(this).Execute<DescribeDiagnoseTopResourceResponse, DescribeDiagnoseTopResourceResult, DescribeDiagnoseTopResourceRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取锁诊断详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeLockAnalyseResponse DescribeLockAnalyse(DescribeLockAnalyseRequest request) {
            return  new DescribeLockAnalyseExecutor().Client(this).Execute<DescribeLockAnalyseResponse, DescribeLockAnalyseResult, DescribeLockAnalyseRequest>(request);
        }
#else
        /// <summary>
        ///  获取锁诊断详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeLockAnalyseResponse> DescribeLockAnalyse(DescribeLockAnalyseRequest request) {
            return await new DescribeLockAnalyseExecutor().Client(this).Execute<DescribeLockAnalyseResponse, DescribeLockAnalyseResult, DescribeLockAnalyseRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  修改关联实例，每次都是全量下发
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public UpdatePanelClustersResponse UpdatePanelClusters(UpdatePanelClustersRequest request) {
            return  new UpdatePanelClustersExecutor().Client(this).Execute<UpdatePanelClustersResponse, UpdatePanelClustersResult, UpdatePanelClustersRequest>(request);
        }
#else
        /// <summary>
        ///  修改关联实例，每次都是全量下发
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<UpdatePanelClustersResponse> UpdatePanelClusters(UpdatePanelClustersRequest request) {
            return await new UpdatePanelClustersExecutor().Client(this).Execute<UpdatePanelClustersResponse, UpdatePanelClustersResult, UpdatePanelClustersRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取已接入mysql实例列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeClusterListResponse DescribeClusterList(DescribeClusterListRequest request) {
            return  new DescribeClusterListExecutor().Client(this).Execute<DescribeClusterListResponse, DescribeClusterListResult, DescribeClusterListRequest>(request);
        }
#else
        /// <summary>
        ///  获取已接入mysql实例列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeClusterListResponse> DescribeClusterList(DescribeClusterListRequest request) {
            return await new DescribeClusterListExecutor().Client(this).Execute<DescribeClusterListResponse, DescribeClusterListResult, DescribeClusterListRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取当前实例的所有诊断记录
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeAnalyseListResponse DescribeAnalyseList(DescribeAnalyseListRequest request) {
            return  new DescribeAnalyseListExecutor().Client(this).Execute<DescribeAnalyseListResponse, DescribeAnalyseListResult, DescribeAnalyseListRequest>(request);
        }
#else
        /// <summary>
        ///  获取当前实例的所有诊断记录
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeAnalyseListResponse> DescribeAnalyseList(DescribeAnalyseListRequest request) {
            return await new DescribeAnalyseListExecutor().Client(this).Execute<DescribeAnalyseListResponse, DescribeAnalyseListResult, DescribeAnalyseListRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取未提交事务信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeUnCommitTrxsResponse DescribeUnCommitTrxs(DescribeUnCommitTrxsRequest request) {
            return  new DescribeUnCommitTrxsExecutor().Client(this).Execute<DescribeUnCommitTrxsResponse, DescribeUnCommitTrxsResult, DescribeUnCommitTrxsRequest>(request);
        }
#else
        /// <summary>
        ///  获取未提交事务信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeUnCommitTrxsResponse> DescribeUnCommitTrxs(DescribeUnCommitTrxsRequest request) {
            return await new DescribeUnCommitTrxsExecutor().Client(this).Execute<DescribeUnCommitTrxsResponse, DescribeUnCommitTrxsResult, DescribeUnCommitTrxsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询慢sql次数及分布
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeSlowSqlMetricResponse DescribeSlowSqlMetric(DescribeSlowSqlMetricRequest request) {
            return  new DescribeSlowSqlMetricExecutor().Client(this).Execute<DescribeSlowSqlMetricResponse, DescribeSlowSqlMetricResult, DescribeSlowSqlMetricRequest>(request);
        }
#else
        /// <summary>
        ///  查询慢sql次数及分布
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeSlowSqlMetricResponse> DescribeSlowSqlMetric(DescribeSlowSqlMetricRequest request) {
            return await new DescribeSlowSqlMetricExecutor().Client(this).Execute<DescribeSlowSqlMetricResponse, DescribeSlowSqlMetricResult, DescribeSlowSqlMetricRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取冗余索引和未使用索引的信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeIndexsResponse DescribeIndexs(DescribeIndexsRequest request) {
            return  new DescribeIndexsExecutor().Client(this).Execute<DescribeIndexsResponse, DescribeIndexsResult, DescribeIndexsRequest>(request);
        }
#else
        /// <summary>
        ///  获取冗余索引和未使用索引的信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeIndexsResponse> DescribeIndexs(DescribeIndexsRequest request) {
            return await new DescribeIndexsExecutor().Client(this).Execute<DescribeIndexsResponse, DescribeIndexsResult, DescribeIndexsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取事务锁信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeTrxLocksResponse DescribeTrxLocks(DescribeTrxLocksRequest request) {
            return  new DescribeTrxLocksExecutor().Client(this).Execute<DescribeTrxLocksResponse, DescribeTrxLocksResult, DescribeTrxLocksRequest>(request);
        }
#else
        /// <summary>
        ///  获取事务锁信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeTrxLocksResponse> DescribeTrxLocks(DescribeTrxLocksRequest request) {
            return await new DescribeTrxLocksExecutor().Client(this).Execute<DescribeTrxLocksResponse, DescribeTrxLocksResult, DescribeTrxLocksRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  添加监控大盘
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreatePanelResponse CreatePanel(CreatePanelRequest request) {
            return  new CreatePanelExecutor().Client(this).Execute<CreatePanelResponse, CreatePanelResult, CreatePanelRequest>(request);
        }
#else
        /// <summary>
        ///  添加监控大盘
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreatePanelResponse> CreatePanel(CreatePanelRequest request) {
            return await new CreatePanelExecutor().Client(this).Execute<CreatePanelResponse, CreatePanelResult, CreatePanelRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取诊断记录
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeDiagnoseResponse DescribeDiagnose(DescribeDiagnoseRequest request) {
            return  new DescribeDiagnoseExecutor().Client(this).Execute<DescribeDiagnoseResponse, DescribeDiagnoseResult, DescribeDiagnoseRequest>(request);
        }
#else
        /// <summary>
        ///  获取诊断记录
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeDiagnoseResponse> DescribeDiagnose(DescribeDiagnoseRequest request) {
            return await new DescribeDiagnoseExecutor().Client(this).Execute<DescribeDiagnoseResponse, DescribeDiagnoseResult, DescribeDiagnoseRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  最近3小时，24小时，3天慢sql情况
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeslowLogStatisticResponse DescribeslowLogStatistic(DescribeslowLogStatisticRequest request) {
            return  new DescribeslowLogStatisticExecutor().Client(this).Execute<DescribeslowLogStatisticResponse, DescribeslowLogStatisticResult, DescribeslowLogStatisticRequest>(request);
        }
#else
        /// <summary>
        ///  最近3小时，24小时，3天慢sql情况
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeslowLogStatisticResponse> DescribeslowLogStatistic(DescribeslowLogStatisticRequest request) {
            return await new DescribeslowLogStatisticExecutor().Client(this).Execute<DescribeslowLogStatisticResponse, DescribeslowLogStatisticResult, DescribeslowLogStatisticRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询监控值
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeMetricValueByGidResponse DescribeMetricValueByGid(DescribeMetricValueByGidRequest request) {
            return  new DescribeMetricValueByGidExecutor().Client(this).Execute<DescribeMetricValueByGidResponse, DescribeMetricValueByGidResult, DescribeMetricValueByGidRequest>(request);
        }
#else
        /// <summary>
        ///  查询监控值
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeMetricValueByGidResponse> DescribeMetricValueByGid(DescribeMetricValueByGidRequest request) {
            return await new DescribeMetricValueByGidExecutor().Client(this).Execute<DescribeMetricValueByGidResponse, DescribeMetricValueByGidResult, DescribeMetricValueByGidRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取空间信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeStoragesResponse DescribeStorages(DescribeStoragesRequest request) {
            return  new DescribeStoragesExecutor().Client(this).Execute<DescribeStoragesResponse, DescribeStoragesResult, DescribeStoragesRequest>(request);
        }
#else
        /// <summary>
        ///  获取空间信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeStoragesResponse> DescribeStorages(DescribeStoragesRequest request) {
            return await new DescribeStoragesExecutor().Client(this).Execute<DescribeStoragesResponse, DescribeStoragesResult, DescribeStoragesRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  近一小时告警列表，按级别倒序
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeAlarmResourceResponse DescribeAlarmResource(DescribeAlarmResourceRequest request) {
            return  new DescribeAlarmResourceExecutor().Client(this).Execute<DescribeAlarmResourceResponse, DescribeAlarmResourceResult, DescribeAlarmResourceRequest>(request);
        }
#else
        /// <summary>
        ///  近一小时告警列表，按级别倒序
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeAlarmResourceResponse> DescribeAlarmResource(DescribeAlarmResourceRequest request) {
            return await new DescribeAlarmResourceExecutor().Client(this).Execute<DescribeAlarmResourceResponse, DescribeAlarmResourceResult, DescribeAlarmResourceRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  kill当前实例指定的会话
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public KillSessionResponse KillSession(KillSessionRequest request) {
            return  new KillSessionExecutor().Client(this).Execute<KillSessionResponse, KillSessionResult, KillSessionRequest>(request);
        }
#else
        /// <summary>
        ///  kill当前实例指定的会话
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<KillSessionResponse> KillSession(KillSessionRequest request) {
            return await new KillSessionExecutor().Client(this).Execute<KillSessionResponse, KillSessionResult, KillSessionRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询支持自定义的监控指标
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeSupportMetricsResponse DescribeSupportMetrics(DescribeSupportMetricsRequest request) {
            return  new DescribeSupportMetricsExecutor().Client(this).Execute<DescribeSupportMetricsResponse, DescribeSupportMetricsResult, DescribeSupportMetricsRequest>(request);
        }
#else
        /// <summary>
        ///  查询支持自定义的监控指标
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeSupportMetricsResponse> DescribeSupportMetrics(DescribeSupportMetricsRequest request) {
            return await new DescribeSupportMetricsExecutor().Client(this).Execute<DescribeSupportMetricsResponse, DescribeSupportMetricsResult, DescribeSupportMetricsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  最近5分钟(或历史某点5分钟)，top5的资源
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetTopResourceByMetricResponse GetTopResourceByMetric(GetTopResourceByMetricRequest request) {
            return  new GetTopResourceByMetricExecutor().Client(this).Execute<GetTopResourceByMetricResponse, GetTopResourceByMetricResult, GetTopResourceByMetricRequest>(request);
        }
#else
        /// <summary>
        ///  最近5分钟(或历史某点5分钟)，top5的资源
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetTopResourceByMetricResponse> GetTopResourceByMetric(GetTopResourceByMetricRequest request) {
            return await new GetTopResourceByMetricExecutor().Client(this).Execute<GetTopResourceByMetricResponse, GetTopResourceByMetricResult, GetTopResourceByMetricRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  取消实例接入
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CancleConnectResponse CancleConnect(CancleConnectRequest request) {
            return  new CancleConnectExecutor().Client(this).Execute<CancleConnectResponse, CancleConnectResult, CancleConnectRequest>(request);
        }
#else
        /// <summary>
        ///  取消实例接入
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CancleConnectResponse> CancleConnect(CancleConnectRequest request) {
            return await new CancleConnectExecutor().Client(this).Execute<CancleConnectResponse, CancleConnectResult, CancleConnectRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取实例详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeClusterDetailResponse DescribeClusterDetail(DescribeClusterDetailRequest request) {
            return  new DescribeClusterDetailExecutor().Client(this).Execute<DescribeClusterDetailResponse, DescribeClusterDetailResult, DescribeClusterDetailRequest>(request);
        }
#else
        /// <summary>
        ///  获取实例详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeClusterDetailResponse> DescribeClusterDetail(DescribeClusterDetailRequest request) {
            return await new DescribeClusterDetailExecutor().Client(this).Execute<DescribeClusterDetailResponse, DescribeClusterDetailResult, DescribeClusterDetailRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询监控大盘监控值
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribePanelMetricValueByGidResponse DescribePanelMetricValueByGid(DescribePanelMetricValueByGidRequest request) {
            return  new DescribePanelMetricValueByGidExecutor().Client(this).Execute<DescribePanelMetricValueByGidResponse, DescribePanelMetricValueByGidResult, DescribePanelMetricValueByGidRequest>(request);
        }
#else
        /// <summary>
        ///  查询监控大盘监控值
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribePanelMetricValueByGidResponse> DescribePanelMetricValueByGid(DescribePanelMetricValueByGidRequest request) {
            return await new DescribePanelMetricValueByGidExecutor().Client(this).Execute<DescribePanelMetricValueByGidResponse, DescribePanelMetricValueByGidResult, DescribePanelMetricValueByGidRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  关联实例自定义监控项，每次都要求全量提交
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public BindMetricsResponse BindMetrics(BindMetricsRequest request) {
            return  new BindMetricsExecutor().Client(this).Execute<BindMetricsResponse, BindMetricsResult, BindMetricsRequest>(request);
        }
#else
        /// <summary>
        ///  关联实例自定义监控项，每次都要求全量提交
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<BindMetricsResponse> BindMetrics(BindMetricsRequest request) {
            return await new BindMetricsExecutor().Client(this).Execute<BindMetricsResponse, BindMetricsResult, BindMetricsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  SQL优化
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public TurningSqlResponse TurningSql(TurningSqlRequest request) {
            return  new TurningSqlExecutor().Client(this).Execute<TurningSqlResponse, TurningSqlResult, TurningSqlRequest>(request);
        }
#else
        /// <summary>
        ///  SQL优化
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<TurningSqlResponse> TurningSql(TurningSqlRequest request) {
            return await new TurningSqlExecutor().Client(this).Execute<TurningSqlResponse, TurningSqlResult, TurningSqlRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  新接入mysql实例
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateClusterResponse CreateCluster(CreateClusterRequest request) {
            return  new CreateClusterExecutor().Client(this).Execute<CreateClusterResponse, CreateClusterResult, CreateClusterRequest>(request);
        }
#else
        /// <summary>
        ///  新接入mysql实例
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateClusterResponse> CreateCluster(CreateClusterRequest request) {
            return await new CreateClusterExecutor().Client(this).Execute<CreateClusterResponse, CreateClusterResult, CreateClusterRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  根据诊断id进行表诊断
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CheckTableByTypeResponse CheckTableByType(CheckTableByTypeRequest request) {
            return  new CheckTableByTypeExecutor().Client(this).Execute<CheckTableByTypeResponse, CheckTableByTypeResult, CheckTableByTypeRequest>(request);
        }
#else
        /// <summary>
        ///  根据诊断id进行表诊断
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CheckTableByTypeResponse> CheckTableByType(CheckTableByTypeRequest request) {
            return await new CheckTableByTypeExecutor().Client(this).Execute<CheckTableByTypeResponse, CheckTableByTypeResult, CheckTableByTypeRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取当前实例系统信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeSystemInfoResponse DescribeSystemInfo(DescribeSystemInfoRequest request) {
            return  new DescribeSystemInfoExecutor().Client(this).Execute<DescribeSystemInfoResponse, DescribeSystemInfoResult, DescribeSystemInfoRequest>(request);
        }
#else
        /// <summary>
        ///  获取当前实例系统信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeSystemInfoResponse> DescribeSystemInfo(DescribeSystemInfoRequest request) {
            return await new DescribeSystemInfoExecutor().Client(this).Execute<DescribeSystemInfoResponse, DescribeSystemInfoResult, DescribeSystemInfoRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取非事务锁信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeUntrxLocksResponse DescribeUntrxLocks(DescribeUntrxLocksRequest request) {
            return  new DescribeUntrxLocksExecutor().Client(this).Execute<DescribeUntrxLocksResponse, DescribeUntrxLocksResult, DescribeUntrxLocksRequest>(request);
        }
#else
        /// <summary>
        ///  获取非事务锁信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeUntrxLocksResponse> DescribeUntrxLocks(DescribeUntrxLocksRequest request) {
            return await new DescribeUntrxLocksExecutor().Client(this).Execute<DescribeUntrxLocksResponse, DescribeUntrxLocksResult, DescribeUntrxLocksRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  SQL explain执行计划
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ExplainSqlResponse ExplainSql(ExplainSqlRequest request) {
            return  new ExplainSqlExecutor().Client(this).Execute<ExplainSqlResponse, ExplainSqlResult, ExplainSqlRequest>(request);
        }
#else
        /// <summary>
        ///  SQL explain执行计划
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ExplainSqlResponse> ExplainSql(ExplainSqlRequest request) {
            return await new ExplainSqlExecutor().Client(this).Execute<ExplainSqlResponse, ExplainSqlResult, ExplainSqlRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取实时会话信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeNowSessionsResponse DescribeNowSessions(DescribeNowSessionsRequest request) {
            return  new DescribeNowSessionsExecutor().Client(this).Execute<DescribeNowSessionsResponse, DescribeNowSessionsResult, DescribeNowSessionsRequest>(request);
        }
#else
        /// <summary>
        ///  获取实时会话信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeNowSessionsResponse> DescribeNowSessions(DescribeNowSessionsRequest request) {
            return await new DescribeNowSessionsExecutor().Client(this).Execute<DescribeNowSessionsResponse, DescribeNowSessionsResult, DescribeNowSessionsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除监控大盘
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeletePanelResponse DeletePanel(DeletePanelRequest request) {
            return  new DeletePanelExecutor().Client(this).Execute<DeletePanelResponse, DeletePanelResult, DeletePanelRequest>(request);
        }
#else
        /// <summary>
        ///  删除监控大盘
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeletePanelResponse> DeletePanel(DeletePanelRequest request) {
            return await new DeletePanelExecutor().Client(this).Execute<DeletePanelResponse, DeletePanelResult, DeletePanelRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  死锁诊断
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateLockAnalyseResponse CreateLockAnalyse(CreateLockAnalyseRequest request) {
            return  new CreateLockAnalyseExecutor().Client(this).Execute<CreateLockAnalyseResponse, CreateLockAnalyseResult, CreateLockAnalyseRequest>(request);
        }
#else
        /// <summary>
        ///  死锁诊断
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateLockAnalyseResponse> CreateLockAnalyse(CreateLockAnalyseRequest request) {
            return await new CreateLockAnalyseExecutor().Client(this).Execute<CreateLockAnalyseResponse, CreateLockAnalyseResult, CreateLockAnalyseRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取当前实例指定时间的慢SQL统计
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeSlowDigestLogResponse DescribeSlowDigestLog(DescribeSlowDigestLogRequest request) {
            return  new DescribeSlowDigestLogExecutor().Client(this).Execute<DescribeSlowDigestLogResponse, DescribeSlowDigestLogResult, DescribeSlowDigestLogRequest>(request);
        }
#else
        /// <summary>
        ///  获取当前实例指定时间的慢SQL统计
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeSlowDigestLogResponse> DescribeSlowDigestLog(DescribeSlowDigestLogRequest request) {
            return await new DescribeSlowDigestLogExecutor().Client(this).Execute<DescribeSlowDigestLogResponse, DescribeSlowDigestLogResult, DescribeSlowDigestLogRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询告警历史
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeAlarmHistoryResponse DescribeAlarmHistory(DescribeAlarmHistoryRequest request) {
            return  new DescribeAlarmHistoryExecutor().Client(this).Execute<DescribeAlarmHistoryResponse, DescribeAlarmHistoryResult, DescribeAlarmHistoryRequest>(request);
        }
#else
        /// <summary>
        ///  查询告警历史
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeAlarmHistoryResponse> DescribeAlarmHistory(DescribeAlarmHistoryRequest request) {
            return await new DescribeAlarmHistoryExecutor().Client(this).Execute<DescribeAlarmHistoryResponse, DescribeAlarmHistoryResult, DescribeAlarmHistoryRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  库空间Top 10
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeSchemaSpaceTopResponse DescribeSchemaSpaceTop(DescribeSchemaSpaceTopRequest request) {
            return  new DescribeSchemaSpaceTopExecutor().Client(this).Execute<DescribeSchemaSpaceTopResponse, DescribeSchemaSpaceTopResult, DescribeSchemaSpaceTopRequest>(request);
        }
#else
        /// <summary>
        ///  库空间Top 10
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeSchemaSpaceTopResponse> DescribeSchemaSpaceTop(DescribeSchemaSpaceTopRequest request) {
            return await new DescribeSchemaSpaceTopExecutor().Client(this).Execute<DescribeSchemaSpaceTopResponse, DescribeSchemaSpaceTopResult, DescribeSchemaSpaceTopRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询支持诊断的类型
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CheckTableTypesResponse CheckTableTypes(CheckTableTypesRequest request) {
            return  new CheckTableTypesExecutor().Client(this).Execute<CheckTableTypesResponse, CheckTableTypesResult, CheckTableTypesRequest>(request);
        }
#else
        /// <summary>
        ///  查询支持诊断的类型
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CheckTableTypesResponse> CheckTableTypes(CheckTableTypesRequest request) {
            return await new CheckTableTypesExecutor().Client(this).Execute<CheckTableTypesResponse, CheckTableTypesResult, CheckTableTypesRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取告警数量，用于趋势展示
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeAlarmTrendResponse DescribeAlarmTrend(DescribeAlarmTrendRequest request) {
            return  new DescribeAlarmTrendExecutor().Client(this).Execute<DescribeAlarmTrendResponse, DescribeAlarmTrendResult, DescribeAlarmTrendRequest>(request);
        }
#else
        /// <summary>
        ///  获取告警数量，用于趋势展示
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeAlarmTrendResponse> DescribeAlarmTrend(DescribeAlarmTrendRequest request) {
            return await new DescribeAlarmTrendExecutor().Client(this).Execute<DescribeAlarmTrendResponse, DescribeAlarmTrendResult, DescribeAlarmTrendRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取关联实例
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetPanelRelateClustersResponse GetPanelRelateClusters(GetPanelRelateClustersRequest request) {
            return  new GetPanelRelateClustersExecutor().Client(this).Execute<GetPanelRelateClustersResponse, GetPanelRelateClustersResult, GetPanelRelateClustersRequest>(request);
        }
#else
        /// <summary>
        ///  获取关联实例
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetPanelRelateClustersResponse> GetPanelRelateClusters(GetPanelRelateClustersRequest request) {
            return await new GetPanelRelateClustersExecutor().Client(this).Execute<GetPanelRelateClustersResponse, GetPanelRelateClustersResult, GetPanelRelateClustersRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  一键诊断
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateDiagnoseResponse CreateDiagnose(CreateDiagnoseRequest request) {
            return  new CreateDiagnoseExecutor().Client(this).Execute<CreateDiagnoseResponse, CreateDiagnoseResult, CreateDiagnoseRequest>(request);
        }
#else
        /// <summary>
        ///  一键诊断
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateDiagnoseResponse> CreateDiagnose(CreateDiagnoseRequest request) {
            return await new CreateDiagnoseExecutor().Client(this).Execute<CreateDiagnoseResponse, CreateDiagnoseResult, CreateDiagnoseRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取实例时间范围内按 dbName、userName、clientIP 分组统计的慢sql条数信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeSlowLogDimensionsStatisticResponse DescribeSlowLogDimensionsStatistic(DescribeSlowLogDimensionsStatisticRequest request) {
            return  new DescribeSlowLogDimensionsStatisticExecutor().Client(this).Execute<DescribeSlowLogDimensionsStatisticResponse, DescribeSlowLogDimensionsStatisticResult, DescribeSlowLogDimensionsStatisticRequest>(request);
        }
#else
        /// <summary>
        ///  获取实例时间范围内按 dbName、userName、clientIP 分组统计的慢sql条数信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeSlowLogDimensionsStatisticResponse> DescribeSlowLogDimensionsStatistic(DescribeSlowLogDimensionsStatisticRequest request) {
            return await new DescribeSlowLogDimensionsStatisticExecutor().Client(this).Execute<DescribeSlowLogDimensionsStatisticResponse, DescribeSlowLogDimensionsStatisticResult, DescribeSlowLogDimensionsStatisticRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取空间趋势
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeStorageTrendResponse DescribeStorageTrend(DescribeStorageTrendRequest request) {
            return  new DescribeStorageTrendExecutor().Client(this).Execute<DescribeStorageTrendResponse, DescribeStorageTrendResult, DescribeStorageTrendRequest>(request);
        }
#else
        /// <summary>
        ///  获取空间趋势
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeStorageTrendResponse> DescribeStorageTrend(DescribeStorageTrendRequest request) {
            return await new DescribeStorageTrendExecutor().Client(this).Execute<DescribeStorageTrendResponse, DescribeStorageTrendResult, DescribeStorageTrendRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  一键诊断趋势
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeDiagnoseTrendResponse DescribeDiagnoseTrend(DescribeDiagnoseTrendRequest request) {
            return  new DescribeDiagnoseTrendExecutor().Client(this).Execute<DescribeDiagnoseTrendResponse, DescribeDiagnoseTrendResult, DescribeDiagnoseTrendRequest>(request);
        }
#else
        /// <summary>
        ///  一键诊断趋势
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeDiagnoseTrendResponse> DescribeDiagnoseTrend(DescribeDiagnoseTrendRequest request) {
            return await new DescribeDiagnoseTrendExecutor().Client(this).Execute<DescribeDiagnoseTrendResponse, DescribeDiagnoseTrendResult, DescribeDiagnoseTrendRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  最近3小时，24小时，3天报警数量
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeAlarmStatisticResponse DescribeAlarmStatistic(DescribeAlarmStatisticRequest request) {
            return  new DescribeAlarmStatisticExecutor().Client(this).Execute<DescribeAlarmStatisticResponse, DescribeAlarmStatisticResult, DescribeAlarmStatisticRequest>(request);
        }
#else
        /// <summary>
        ///  最近3小时，24小时，3天报警数量
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeAlarmStatisticResponse> DescribeAlarmStatistic(DescribeAlarmStatisticRequest request) {
            return await new DescribeAlarmStatisticExecutor().Client(this).Execute<DescribeAlarmStatisticResponse, DescribeAlarmStatisticResult, DescribeAlarmStatisticRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取实例的巡检记录列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeInspectListResponse DescribeInspectList(DescribeInspectListRequest request) {
            return  new DescribeInspectListExecutor().Client(this).Execute<DescribeInspectListResponse, DescribeInspectListResult, DescribeInspectListRequest>(request);
        }
#else
        /// <summary>
        ///  获取实例的巡检记录列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeInspectListResponse> DescribeInspectList(DescribeInspectListRequest request) {
            return await new DescribeInspectListExecutor().Client(this).Execute<DescribeInspectListResponse, DescribeInspectListResult, DescribeInspectListRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  实例所有的库名
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeAllDbInfoResponse DescribeAllDbInfo(DescribeAllDbInfoRequest request) {
            return  new DescribeAllDbInfoExecutor().Client(this).Execute<DescribeAllDbInfoResponse, DescribeAllDbInfoResult, DescribeAllDbInfoRequest>(request);
        }
#else
        /// <summary>
        ///  实例所有的库名
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeAllDbInfoResponse> DescribeAllDbInfo(DescribeAllDbInfoRequest request) {
            return await new DescribeAllDbInfoExecutor().Client(this).Execute<DescribeAllDbInfoResponse, DescribeAllDbInfoResult, DescribeAllDbInfoRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取当前实例指定时间的慢SQL明细
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeSlowLogResponse DescribeSlowLog(DescribeSlowLogRequest request) {
            return  new DescribeSlowLogExecutor().Client(this).Execute<DescribeSlowLogResponse, DescribeSlowLogResult, DescribeSlowLogRequest>(request);
        }
#else
        /// <summary>
        ///  获取当前实例指定时间的慢SQL明细
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeSlowLogResponse> DescribeSlowLog(DescribeSlowLogRequest request) {
            return await new DescribeSlowLogExecutor().Client(this).Execute<DescribeSlowLogResponse, DescribeSlowLogResult, DescribeSlowLogRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取监控大盘列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribePanelListResponse DescribePanelList(DescribePanelListRequest request) {
            return  new DescribePanelListExecutor().Client(this).Execute<DescribePanelListResponse, DescribePanelListResult, DescribePanelListRequest>(request);
        }
#else
        /// <summary>
        ///  获取监控大盘列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribePanelListResponse> DescribePanelList(DescribePanelListRequest request) {
            return await new DescribePanelListExecutor().Client(this).Execute<DescribePanelListResponse, DescribePanelListResult, DescribePanelListRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  表空间Top 10
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DescribeTableSpaceTopResponse DescribeTableSpaceTop(DescribeTableSpaceTopRequest request) {
            return  new DescribeTableSpaceTopExecutor().Client(this).Execute<DescribeTableSpaceTopResponse, DescribeTableSpaceTopResult, DescribeTableSpaceTopRequest>(request);
        }
#else
        /// <summary>
        ///  表空间Top 10
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DescribeTableSpaceTopResponse> DescribeTableSpaceTop(DescribeTableSpaceTopRequest request) {
            return await new DescribeTableSpaceTopExecutor().Client(this).Execute<DescribeTableSpaceTopResponse, DescribeTableSpaceTopResult, DescribeTableSpaceTopRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询实例已经绑定的监控项
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetBindMetricsResponse GetBindMetrics(GetBindMetricsRequest request) {
            return  new GetBindMetricsExecutor().Client(this).Execute<GetBindMetricsResponse, GetBindMetricsResult, GetBindMetricsRequest>(request);
        }
#else
        /// <summary>
        ///  查询实例已经绑定的监控项
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetBindMetricsResponse> GetBindMetrics(GetBindMetricsRequest request) {
            return await new GetBindMetricsExecutor().Client(this).Execute<GetBindMetricsResponse, GetBindMetricsResult, GetBindMetricsRequest>(request).ConfigureAwait(false);
        }
#endif

            /// <summary>
            ///  默认SmartdbaClient 构造器 接口
            ///</summary>
            public interface Builder
            {

                /// <summary>
                /// 设置认证信息参数
                /// </summary>
                /// <param name="provider">认证信息提供对象</param>
                /// <returns>smartdbaClient 构造器</returns>
                Builder CredentialsProvider(CredentialsProvider provider);

                /// <summary>
                /// 设置请求环境参数
                /// </summary>
                /// <param name="environment">环境参数信息</param>
                /// <returns>smartdbaClient 构造器</returns>
                Builder Environment(Core.Client.SDKEnvironment environment);

                /// <summary>
                /// http 请求配置信息
                /// </summary>
                /// <param name="config">http 请求配置信息</param>
                /// <returns>smartdbaClient 构造器</returns>
                Builder HttpRequestConfig(HttpRequestConfig config);

                /// <summary>
                ///  构造SmartdbaClient 对象
                ///</summary>
                SmartdbaClient Build();
            }

            /// <summary>
            ///  默认SmartdbaClient 构造器
            ///</summary>
            public class DefaultBuilder : Builder
            {
                /// <summary>
                ///  SmartdbaClient service client
                /// </summary>
                private  SmartdbaClient smartdbaClient;

                /// <summary>
                ///  默认SmartdbaClient 构造器构造对象
                ///</summary>
                public DefaultBuilder()
                {
                    smartdbaClient = new SmartdbaClient();
                }

                /// <summary>
                ///  构造SmartdbaClient 对象
                ///</summary>
                public SmartdbaClient Build()
                {
                    if (smartdbaClient.CredentialsProvider == null)
                    {
                        //if credentialsProvider not set, try load jdcloud global default  credentials provider
                        smartdbaClient.credentialsProvider = JdCloud.DefaultInstance.GetCredentialsProvider();
                        if (smartdbaClient.credentialsProvider == null)
                        {
                            throw new ArgumentNullException("SmartdbaClient build error: jdcloud credentials provider not set");
                        }
                    }
                    if (smartdbaClient.HttpRequestConfig == null)
                    {
                        smartdbaClient.httpRequestConfig = JdCloud.DefaultInstance.GetHttpRequestConfig();
                        if (smartdbaClient.httpRequestConfig == null)
                        {
                        throw new ArgumentNullException("SmartdbaClient build error: http request config not set");
                        }
                    }
                    return smartdbaClient;
                }

                /// <summary>
                /// 设置认证信息参数
                /// </summary>
                /// <param name="provider">认证信息提供对象</param>
                /// <returns>smartdbaClient 构造器</returns>
                public Builder CredentialsProvider(CredentialsProvider provider)
                {
                    smartdbaClient.credentialsProvider = provider;
                    return this;
                }

                /// <summary>
                /// 设置请求环境参数
                /// </summary>
                /// <param name="environment">环境参数信息</param>
                /// <returns>smartdbaClient 构造器</returns>
                public Builder Environment(SDKEnvironment environment)
                {
                    smartdbaClient.environment = environment;
                    return this;
                }

                /// <summary>
                /// http 请求配置信息
                /// </summary>
                /// <param name="config">http 请求配置信息</param>
                /// <returns>smartdbaClient 构造器</returns>
                public Builder HttpRequestConfig(HttpRequestConfig config)
                {
                    smartdbaClient.httpRequestConfig = config;
                    return this;
                }
            }
    }
}
